package com.chen.authority.common.model;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

/**
 * 分页 查询对象
 *
 * @author chengy
 * @date 2022/11/02
 */
@Data
public class PageQo {

    /**
     * 当前页
     */
    @ApiModelProperty("当前页")
    private int currentPage = 1;

    /**
     * 页大小
     */
    @ApiModelProperty("页大小")
    private int pageSize = 10;

    /**
     * 排序列
     */
    @ApiModelProperty("排序列")
    private String orderByColumn;

    /**
     * 排序的方向
     */
    @ApiModelProperty("排序的方向")
    private boolean asc;

    /**
     * 页大小 默认值（默认查全部）
     */
    private static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE;

    /**
     * 构造分页对象
     */
    public <T> Page<T> build() {
        if (pageSize <= 0) pageSize = DEFAULT_PAGE_SIZE;
        Page<T> page = new Page<>(currentPage, pageSize);
        if (StringUtils.isNotBlank(orderByColumn)) {
            orderByColumn = StrUtil.toUnderlineCase(orderByColumn);
            OrderItem orderItem = asc ? OrderItem.asc(orderByColumn) : OrderItem.desc(orderByColumn);
            page.addOrder(orderItem);
        }
        return page;
    }

}